home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / listings / v_12_05 / plauger / ios.c < prev    next >
C/C++ Source or Header  |  1994-03-08  |  1KB  |  56 lines

  1.  
  2. ---------------- Listing 3: The file ios.c ----------------
  3.  
  4. // ios -- ios basic members
  5. #include <iostream>
  6.  
  7. int ios::_Index = 0;
  8.  
  9. ios::failure::~failure()
  10.     {    // destruct a failure
  11.     }
  12.  
  13. ios::~ios()
  14.     {    // destruct an ios -- DO (ALMOST) NOTHING
  15.     if (this != (ios *)&cin && this != (ios *)&cout
  16.         && this != (ios *)&cerr && this != (ios *)&clog)
  17.         _Tidy();
  18.     }
  19.  
  20. void ios::clear(iostate ns)
  21.     {    // clear all but selected state bits
  22.     _State = ns & _Statmask;
  23.     if (_Sb == 0)
  24.         _State |= badbit;
  25.     if (_State & _Except)
  26.         failure("ios::failure", "ios::clear",
  27.             _State & badbit ? "badbit set"
  28.             : _State & failbit ? "failbit set"
  29.             : "eofbit set").raise();
  30.     }
  31.  
  32. void ios::init(streambuf *sb)
  33.     {    // initialize a new ios
  34.     _Sb = sb;
  35.     _Tiestr = 0;
  36.     _Except = goodbit;
  37.     _Fmtfl = skipws | dec;
  38.     _Prec = 6;
  39.     _Wide = 0;
  40.     _Fillch = ' ';
  41.     _Arr = 0;
  42.     clear(goodbit);
  43.     }
  44.  
  45. void ios::_Tidy()
  46.     {    // discard storage for an ios
  47.     _Iosarray *q1, *q2;
  48.     if (_Arr != 0 && 0 <= _Arr->_Index)
  49.         {    // discard if not for standard stream
  50.         for (q1 = _Arr; q1 != 0; q1 = q2)
  51.             q2 = q1->_Next, delete q1;
  52.         }
  53.         _Arr = 0;
  54.     }
  55.  
  56.